// 专门编写路由验证相关的代码
// node/ES6模块化，导入的对象，都是同一个
// 模块化文件导出的对象是有缓存的
import router from '@/router'
import store from '@/store'
// 因为vue文件里this是组件对象，可以通过原型找到$store(所以才写this.$store)
// 但是这里是一个独立的js模块文件，想要使用store，得引入过来。

router.beforeEach((to, from, next) => {
  // 非登录页面(首页),无权限,则强制跳转到登录页面
  // 没有token(未登录)--原地是false，但是还想让if进去，所以加了!
  if (to.path !== '/login' && !store.state.user.token) {
    next('/login')
    // 需求：如果已经登录了，不要让它再去登录页面了，回到刚刚来的页面
  } else if (to.path === '/login' && store.state.user.token) {
    next(from.path)
  } else {
    next()
  }
})

// 情况1：网页第一次打开
// 1.默认的路由就是 #/
// 2.进router/index.js，匹配规则，从/被重定向了/layout(暂未触发守卫)
// 3.发现/layout还有重定向/layout/home
// 4.触发路由守卫：to的值(/layout/home),from的值(undefined)
// 5.第一个if符合2个条件，于是打回登录页(暂时所有的页面都需要登录才能查看)
